#!env/bin/python
import logging
#import asyncio
from aiogram import Bot, Dispatcher, executor, types
from aiogram.utils.exceptions import BotBlocked

from config.config import BOT_TOKEN
from app.handlers import setup as setup_handlers



bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)

LOG_FORMAT = "%(levelname)s %(asctime)s %(name)s - %(message)s"
logging.basicConfig(
		#filename="program.log",
		level=logging.DEBUG,
		format=LOG_FORMAT)
logger = logging.getLogger(__name__)

logging.getLogger("aiogram").setLevel(logging.DEBUG + 1)

#await asyncio.sleep(10.0)  # Здоровый сон на 10 секунд
setup_handlers(dp)

@dp.errors_handler(exception=BotBlocked)
async def error_bot_blocked(update: types.Update, exception: BotBlocked):
    # Update: объект события от Telegram. Exception: объект исключения
    # Здесь можно как-то обработать блокировку, например, удалить пользователя из БД
    logger.debug(f"Меня заблокировал пользователь!\nСообщение: {update}\nОшибка: {exception}")

    # Необходимо возвращать True если дальнейшая обработка не требуется.
    return True


if __name__ == "__main__":
    logger.info("Bot has been started ...")
    executor.start_polling(dp, skip_updates=True)
